package cn.lg.soar.core.util;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 模板导出接口
 */
public interface ITemplateExport {

    ClassLoader CLASS_LOADER = ITemplateExport.class.getClassLoader();

    /**
     * 导出
     * @param template 模板文件流
     * @param outputStream 文件输出流
     * @param data 填充数据
     */
    void export(InputStream template, OutputStream outputStream);

    /**
     * 导出
     * @param template 模板文件路径
     * @param outputStream 文件输出流
     * @param data 填充数据
     */
    default void export(String template, OutputStream outputStream) {
        try (InputStream inputStream = CLASS_LOADER.getResourceAsStream(template)) {
            export(inputStream, outputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 导出
     * @param template 模板文件路径
     * @param outFile 输出文件路径
     * @param data
     */
    default void export(String template, String outFile) {
        try (InputStream inputStream = CLASS_LOADER.getResourceAsStream(template); FileOutputStream fos = new FileOutputStream(outFile)) {
            export(inputStream, fos);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 导出
     * @param template 模板文件流
     * @param outFile 输出文件路径
     * @param data
     */
    default void export(InputStream template, String outFile) {
        try (FileOutputStream fos = new FileOutputStream(outFile)) {
            export(template, fos);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

}
